﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace ElMexicanos.Base.Models
{
    /// <summary>
    /// Classe Sprite : Intégre les éléments de base d'un sprite (position, texture)
    /// </summary>
    public class Sprite
    {
        protected Vector2 position;
        protected Texture2D texture;
        Rectangle boundingRectangle;

        #region constructor

            /// <summary>
            /// Contructeur vide
            /// </summary>
            public Sprite() {}

            /// <summary>
            /// Constructeur
            /// </summary>
            /// <param name="position">Paramètre Vecteur pour définir la position d'affichage</param>
            public Sprite(Vector2 position)
            {
                this.position = position;
            }

            /// <summary>
            /// Constructeur
            /// </summary>
            /// <param name="x">Position en X de l'affichage du sprite</param>
            /// <param name="y">Position en Y de l'affichage du sprite</param>
            public Sprite(float x, float y)
            {
                position = new Vector2(x, y);
            }

        #endregion constructor

        /// <summary>
        /// LoadContent - Charge la texture dans le RessourcesManager (Content)
        /// </summary>
        /// <param name="assetName"></param>
        public void LoadContent(string assetName)
        {
            texture = RessourcesManager.GetInstance().GetTexture(assetName);
        }


        public virtual void Update(Vector2 translation)
        {
            position += translation;
        }

        public virtual void Update()
        {
        }

        public virtual void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(texture, position, Color.White);
        }

        public virtual Texture2D getTexture()
        {
            return texture;
        }
    }
}
